//package cn.good.yan.b7.al;
//
//import com.sun.org.slf4j.internal.Logger;
//import com.sun.org.slf4j.internal.LoggerFactory;
//
//import java.util.HashMap;
//import java.util.Map;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.converter.HttpMessageNotReadableException;
//
//
///**
// * 1 统一异常处理注解  - 正常使用 (包来源于 - Springboot的包)
// *
// * @author shengren.yan
// * @create 2022-02-06
// */
//@RestControllerAdvice(basePackages = "com.good.shopping.product.controller")
//public class ExceptionControllerAdvice {
//
//    private static final Logger log = LoggerFactory.getLogger(ExceptionControllerAdvice.class);
//
//    // 只处理MethodArgumentNotValidException异常，验证相关异常
//    @ExceptionHandler(value = MethodArgumentNotValidException.class)
//    public R<Object> handleValidException(MethodArgumentNotValidException e) {
//        log.error("数据校验出现问题{},异常类型: {}", e.getMessage(), e.getClass());
//        BindingResult bindingResult = e.getBindingResult();
//        Map<String, String> errorMap = new HashMap<>(16);
//        bindingResult.getFieldErrors().forEach((fieldError -> {
//            errorMap.put(fieldError.getField(), fieldError.getDefaultMessage());
//        }));
//        return R.restResult(errorMap, BizCodeEnum.VALID_EXCEPTION.getCode(), BizCodeEnum.VALID_EXCEPTION.getMsg());
//    }
//
//    // 处理全部的异常 ，全部异常
//    @ExceptionHandler(value = Throwable.class)
//    public R<Object> handleException(Throwable throwable) {
//        log.error("错误:", throwable);
//        return R.fail(500, "服务器错误");
//    }
//
//    /**
//     * 400 异常处理 -
//     */
//    @ResponseStatus(HttpStatus.BAD_REQUEST)
//    @ExceptionHandler(MissingServletRequestParameterException.class)
//    public R<Object> e1(MissingServletRequestParameterException e) {
//        log.error("缺少请求参数:", e);
//        return R.fail(400, "400异常");
//    }
//
//    /**
//     * 405 - Method Not Allowed
//     */
//    @ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED)
//    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
//    public Map<String, Object> e2(HttpRequestMethodNotSupportedException e) {
//        log.error("缺少请求参数:", e);
//        return R.fail(405, "405异常");
//    }
//
//}
